package com.shinbada.modules.sys.mapper;

import com.shinbada.core.persistence.BaseMapper;
import com.shinbada.modules.sys.entity.Role;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 角色MAPPER接口
 *
 * @author initcap
 * @version 2016-12-05
 */
@Mapper
@Repository
public interface RoleMapper extends BaseMapper<Role> {

    /**
     * 根据名称获取角色
     *
     * @param role 角色
     * @return 角色
     */
    Role getByName(Role role);

    /**
     * 查询角色的所有无下属菜单ID
     *
     * @param id        主键
     * @param companyId 公司主键
     * @return 集合
     */
    List<String> queryAllNotChildrenMenuId(@Param("id") String id, @Param("companyId") String companyId);

    /**
     * 维护角色与菜单权限关系
     *
     * @param role 角色
     * @return 成功条数
     */
    int deleteRoleMenu(Role role);

    /**
     * 添加角色菜单
     *
     * @param role 角色
     * @return 1 成功
     */
    int insertRoleMenu(Role role);

    /**
     * 维护角色与数据权限关系
     *
     * @param role 角色
     * @return 成功条数
     */
    int deleteRoleDataRule(Role role);

    /**
     * 添加角色数据权限
     *
     * @param role 角色
     * @return 1 成功
     */
    int insertRoleDataRule(Role role);

    /**
     * 清理指定机构的数据
     *
     * @param companyId 机构标识
     */
    void clearCompanyId(@Param("companyId") String companyId);

}
